<?php 

/**
 * [check_verify 验证验证码]
 * @param  [type] $code [验证码]
 * @param  string $id   [默认为空]
 * @return [type]       [布尔值]
 */
function check_verify($code, $id="")
{
    $Verify = new \Think\Verify();
    return $Verify->check($code,$id);
}

/**
 * [V 原样打印]
 * @param [type] $data [打印的数据]
 */
function V($data)
{
    echo '<pre>';
        print_r($data);
    echo '</pre>';
}

/**
 * [up 文件上传函数]
 * @param  string  $myfile [表单中的name值]
 * @param  integer $size   [允许上传的最大值默认10m]
 * @param  array   $type   [允许上传的文件类型]
 * @param  string  $dir    [默认保存目录./uploads]
 * @return [type]          [输出保存路径加文件名]
 */
    function up($myfile='imgFile',$size=10485760,$type=array('image','text'),$dir='./Public/imgs/'){

        if (empty($_FILES)) {
            echo '请检查您的表单设置或php.ini中的post的设置';
            return false;
        }
        $fileName = $_FILES[$myfile]['name'];
        $fileType = $_FILES[$myfile]['type'];
        $fileTmp_name = $_FILES[$myfile]['tmp_name'];
        $fileError = $_FILES[$myfile]['error'];
        $fileSize = $_FILES[$myfile]['size'];

        if ($fileError != 0) {
            // echo '文件上传出错';
            switch ($fileError) {
                case 1:
                    echo '上传的文件超过了php.ini 中 upload_max_filesize选项限制的值';
                    break;
                case 2:
                    echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
                    break;
                case 3:
                    echo '文件只有部分被上传';
                    break;
                case 4:
                    echo '没有文件被上传';
                    break;
                case 6:
                    echo '找不到临时文件夹。';
                    break;
                case 7:
                    echo '文件写入失败。';
                    echo '<br>';
                    break;
            }
            return false;
        }
        if ($fileSize > $size) {
            echo '文件超出限制大小';
            return false;
        }
        list($mainType) = explode('/',$fileType);
        if(!in_array($mainType,$type)) {
            echo '文件类型不合法';
            return false;
        }
        $ext = pathinfo($fileName)['extension'];
        $saveName = date('Ymd').uniqid().'.'.$ext;
        $savePath = rtrim($dir,'/').'/'.date('Y/m/d/');
        if (!file_exists($savePath)) {
            mkdir($savePath,0777,true);
        }
        $saveFile = $savePath.$saveName;
        if(move_uploaded_file($fileTmp_name,$saveFile)){
            // echo '上传成功<br>';
            return $saveFile;
        }else{
            echo '上传失败<br>';
            return false;
        }
    }

/**
 * [unlink 删除原图和两个缩放图]
 * @param  [url ] $img_path [图片路径]
 * @return [type]           [true]
 */
    function un($img_path) {
        unlink($img_path);
        unlink(dirname($img_path).'/45_'.basename($img_path));
        unlink(dirname($img_path).'/200_'.basename($img_path));
    }


/**
 * [quguan 关注]
 * @return [type] [无返回值 实现用户对 问题的取消关注]
 */
function quguan(){
    $map['user_id'] = $_SESSION['home']['id'];
    $map['question_id'] = $_GET['id'];
    var_dump($map);
    $list = M('user_question')->where($map)->delete();
}

/**
 * [guan 关注]
 * @return [type] [无返回值 实现用户对 问题的关注]
 */
function guan(){
    $data=array();
    $data['user_id'] = $_SESSION['home']['id'];
    $data['question_id'] = $_GET['id'];
    echo M('user_question')->where($data)->select(false);
    if(M('user_question')->where($data)->select()> 0) {
        $data['datetime'] = date('Y-m-d H:i:s');
        $list = M('user_question')->add($data);
    }
}






// kindeditor 需求的函数 (重要)
/**
 * [kimg_upload kindeditor]
 * @return [type] [执行图片上传处理...]
 */
function kimg_upload()
{
    // $php_path = dirname(__FILE__) . '/';
    // $php_url = dirname($_SERVER['PHP_SELF']) . '/';

    //文件保存目录路径
    $save_path = './Public/imgs/';
    //文件保存目录URL   (由于页面路径问题, 所以加../../../)
    $save_url = 'Public/imgs/';
    //定义允许上传的文件扩展名
    $ext_arr = array(
        'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp'),
        // 'flash' => array('swf', 'flv'),
        // 'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'),
        // 'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'),
    );
    //最大文件大小
    $max_size = 1000000;

    //PHP上传失败
    if (!empty($_FILES['imgFile']['error'])) {
        switch($_FILES['imgFile']['error']){
            case '1':
                $error = '超过php.ini允许的大小。';
                break;
            case '2':
                $error = '超过表单允许的大小。';
                break;
            case '3':
                $error = '图片只有部分被上传。';
                break;
            case '4':
                $error = '请选择图片。';
                break;
            case '6':
                $error = '找不到临时目录。';
                break;
            case '7':
                $error = '写文件到硬盘出错。';
                break;
            case '8':
                $error = 'File upload stopped by extension。';
                break;
            case '999':
            default:
                $error = '未知错误。';
        }
        k_alert($error);
    }

    //有上传文件时
    if (empty($_FILES) === false) {
        //原文件名
        $file_name = $_FILES['imgFile']['name'];
        //服务器上临时文件名
        $tmp_name = $_FILES['imgFile']['tmp_name'];
        //文件大小
        $file_size = $_FILES['imgFile']['size'];
        //检查文件名
        if (!$file_name) {
            k_alert("请选择文件。");
        }
        //检查目录
        if (@is_dir($save_path) === false) {
            k_alert("上传目录不存在。");
        }
        //检查目录写权限
        if (@is_writable($save_path) === false) {
            k_alert("上传目录没有写权限。");
        }
        //检查是否已上传
        if (@is_uploaded_file($tmp_name) === false) {
            k_alert("上传失败。");
        }
        //检查文件大小
        if ($file_size > $max_size) {
            k_alert("上传文件大小超过限制。");
        }
        //检查目录名
        // $dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']);
        // if (empty($ext_arr[$dir_name])) {
            // k_alert("目录名不正确。");
        // }
        //获得文件扩展名
        $temp_arr = explode(".", $file_name);
        $file_ext = array_pop($temp_arr);
        $file_ext = trim($file_ext);
        $file_ext = strtolower($file_ext);
        //检查扩展名
        if (in_array($file_ext, $ext_arr[$dir_name]) === false) {
            k_alert("上传文件扩展名是不允许的扩展名。\n只允许" . implode(",", $ext_arr[$dir_name]) . "格式。");
        }
        //新文件名
        $new_file_name = date("YmdHis") . uniqid() . '.' . $file_ext;
        //创建文件夹
        if ($dir_name !== '') {
            $save_path .= substr($new_file_name, 0,4) . '/' .substr($new_file_name, 4,2) . '/' . substr($new_file_name, 6,2) .'/';
            $save_url .= substr($new_file_name, 0,4) . '/' .substr($new_file_name, 4,2) . '/' . substr($new_file_name, 6,2) .'/';
            if (!file_exists($save_path)) {
                mkdir($save_path,0777,true);
            }
        }

        //移动文件
        $file_path = $save_path . $new_file_name;
        if (move_uploaded_file($tmp_name, $file_path) === false) {
            k_alert("上传文件失败。");
        }
        // @chmod($file_path, 0644);
        $file_url = $save_url . $new_file_name;

        header('Content-type: text/html; charset=UTF-8');
        echo json_encode(array('error' => 0, 'url' => $file_url));
        exit;
    }
}

// kindeditor 需求的函数
/**
 * [k_alert json信息输出]
 * @param  [字符串] $msg [出错的输出信息...]
 * @return [type]      [将错误信息转换成数组输出]
 */
function k_alert($msg) {
    header('Content-type: text/html; charset=UTF-8');
    echo json_encode(array('error' => 1, 'message' => $msg));
    exit;
}

//按照uqtime反向排序  usort($arr, $func),所用的回调函数
function mySort($a,$b)
{
  if($a['atime']<$b['atime'])
      return 1;
  return -1;
}




